/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Calculos;

import ConexaoDados.InteracaoDados;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author ufrnusr
 */
public class CalculaAvaliacao {
  
    
    
public double calculaIAE(String data_atual, int id_malha)
{
InteracaoDados calcula = new InteracaoDados();  
String sql = "select * from Historiador where horaInicio = '"+data_atual+"' and tbmalha_fk="+id_malha+" and (tipo = 'PV' or tipo='SP')";
ResultSet retorno = null;
double erro=0;
double resultado=0;
        try {
            retorno = calcula.consulta(sql);
            double PV=0;
            double SP=0;
            while(retorno.next())
            {
                PV = retorno.getDouble("valor");
                retorno.next();
                SP = retorno.getDouble("valor");
                erro = Math.abs(PV-SP);
                resultado = resultado+erro;

            }//fim do while
        } catch (SQLException ex) {
            Logger.getLogger(CalculaAvaliacao.class.getName()).log(Level.SEVERE, null, ex);
        }
return resultado;

}
public double calculaITAE(String data_atual, int id_malha)
{
InteracaoDados calcula = new InteracaoDados();  
String sql = "select * from Historiador where horaInicio = '"+data_atual+"' and tbmalha_fk="+id_malha+" and (tipo = 'PV' or tipo='SP')";
ResultSet retorno = null;
double erro=0;
double resultado=0;
        try {
            retorno = calcula.consulta(sql);
            double PV=0;
            double SP=0;
            int k=1;
            while(retorno.next())
            {
                PV = retorno.getDouble("valor");
                retorno.next();
                SP = retorno.getDouble("valor");
                erro = Math.abs(PV-SP);
                resultado = resultado+k*(erro);

            }//fim do while
        } 
        catch (SQLException ex)
        {
            Logger.getLogger(CalculaAvaliacao.class.getName()).log(Level.SEVERE, null, ex);
        }
return resultado;

}
public double calculaITSE(String data_atual, int id_malha)
{
InteracaoDados calcula = new InteracaoDados();  
String sql = "select * from Historiador where horaInicio = '"+data_atual+"' and tbmalha_fk="+id_malha+" and (tipo = 'PV' or tipo='SP')";
ResultSet retorno = null;
double erro=0;
double resultado=0;
        try {
            retorno = calcula.consulta(sql);
            double PV=0;
            double SP=0;
            int k=1;
            while(retorno.next())
            {
                PV = retorno.getDouble("valor");
                retorno.next();
                SP = retorno.getDouble("valor");
                erro = Math.abs(PV-SP);
                resultado = resultado+k*(erro*erro);
                k++;

            }//fim do while
        } 
        catch (SQLException ex)
        {
            Logger.getLogger(CalculaAvaliacao.class.getName()).log(Level.SEVERE, null, ex);
        }
return resultado;

}  
public double calculaErroMedio(String data_atual, int id_malha)
{
InteracaoDados calcula = new InteracaoDados();  
String sql = "select * from Historiador where horaInicio = '"+data_atual+"' and tbmalha_fk="+id_malha+" and (tipo = 'PV' or tipo='SP')";
ResultSet retorno = null;
double erro=0;
double resultado=0;
        try {
            retorno = calcula.consulta(sql);
            double PV=0;
            double SP=0;
            int tam=0;
            while(retorno.next())
            {
                PV = retorno.getDouble("valor");
                retorno.next();
                SP = retorno.getDouble("valor");
                erro = erro+Math.abs(PV-SP);
                resultado = resultado+erro;
                tam++;
             }//fim do while
           resultado = resultado/tam; 
        } 
        catch (SQLException ex)
        {
            Logger.getLogger(CalculaAvaliacao.class.getName()).log(Level.SEVERE, null, ex);
        }
        Double resultado2 = resultado;
        if(resultado2.isNaN()){
            resultado=0;
        }
return resultado;

} 

public double calculaPercManual(String data_atual, int id_malha)
{
InteracaoDados calcula = new InteracaoDados();  
String sql = "select * from Historiador where horaInicio = '"+data_atual+"' and tbmalha_fk="+id_malha+" and (tipo = 'Modo')";
ResultSet retorno = null;
double Perc=0;
int contManual=0;
int contAutom =0;
double modo = 0;



        try {
            retorno = calcula.consulta(sql);
            while(retorno.next())
            {
                modo = retorno.getDouble("valor");
                if (modo == 1)
                {
                    contAutom++;
                }
                else
                {
                    contManual++;
                }
                    
                
             }//fim do while
        if(contAutom+contManual>0){
           Perc = (contManual/(contAutom+contManual)); 
            }
        } 
        catch (SQLException ex)
        {
            Logger.getLogger(CalculaAvaliacao.class.getName()).log(Level.SEVERE, null, ex);
        }
return Perc;

} 
    
}
